// 泛型 ： 可以使用泛型来创建可重用的组件，一个组件可以支持多种类型的数据。 这样用户就可以以自己的数据类型来使用组件。

// 使用泛型变量
// 泛型约束
function add2<T extends { length: number }>(x: T): T {
  console.log(x.length);
  return x;
}

const str = add2<string>("123");
const list = add2([1, 2, 3, 4]);
const obj = add2({ 
	name: '张三',
	age: '18',
	length: 2
})

// 泛型类型
// function id<T>(params: T): T {
//   return params;
// }

// const add3: <T>(a: T) => T = id;

// 泛型类

// class Person1<T> {
//   name: string;
//   age: T;
//   constructor(name: string, age: T) {
//     this.name = name;
//     this.age = age;
//   }
// }

// const p = new Person1<string>("张三", "18");

// const p1 = new Person1<number>("李四", 18);

// console.log(p, p1);
